package com.fzy.designpattern.multition;

import java.util.ArrayList;
import java.util.Random;


public class ManySimpl {
    /**
     * 最多只能有连个皇帝
     */
    private static int maxNumOfEmperor = 2;
    /**
     * 正在被人尊称的是那个皇帝
     */
    private static int countNumOfEmperor = 0;

    /**
     * 装皇帝的列表;
     */
    private static ArrayList<ManySimpl> hd = new ArrayList<>(maxNumOfEmperor);

    /**
     * 皇帝叫什么名字
     */
    private static ArrayList<String> hdn = new ArrayList<>(maxNumOfEmperor);


    /**
     * 就这么多皇帝了,不允许再推举一个皇帝(new 一个皇帝)
     */
    private ManySimpl() {
        //世俗和道德约束你,目的就是不让你产生第二个皇帝
    }


    private ManySimpl(String name) {
        hdn.add(name);
    }


    /**
     * 先把2个皇帝产生出来
     */
    static {
        //把所有的皇帝都产生出来
        for (int i = 0; i < maxNumOfEmperor; i++) {
            hd.add(new ManySimpl("皇" + (i + 1) + "帝"));
        }
    }


    /**
     * 这里可以指定参数 返回固定的皇帝对象
     *
     * @return
     */
    public static ManySimpl getInstance() {
        Random r = new Random();
        //随机拉出一个皇帝,只要是个精神领袖就成
        countNumOfEmperor = r.nextInt(maxNumOfEmperor);
        return hd.get(countNumOfEmperor);
    }


    /**
     * 皇帝叫什么名字呀
     */
    public void emperorInfo() {
        System.out.println(hdn.get(countNumOfEmperor));
    }


}
